﻿Public Class frmAsignarTecnico
    Private Sub frmAsignarTecnico_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CargaTecnicos()
        LimpiaFormulario()
    End Sub
    Private Sub CargaTecnicos()
        Dim ListaTecnicos As New List(Of clsEmpleado)
        Dim EmpleadoDao As New daoEmpleado()
        Try
            ListaTecnicos = EmpleadoDao.TraeEmpleado_PorRol(1)
            cmbTecnico.DataSource = ListaTecnicos
            cmbTecnico.DisplayMember = "Apellido"
            cmbTecnico.ValueMember = "Emp_Id"
        Catch ex As Exception
        Finally
            EmpleadoDao.Dispose()
        End Try

    End Sub
    Private Sub LimpiaFormulario()
        txtNroOS.Text = ""
        dtpFecDesde.Value = Now.Date
        dtpFecDesde.MaxDate = Now.Date
        txtDetalle.Text = ""
        dtpFecHasta.Value = Now.Date
        dtpFecHasta.MaxDate = Now.Date
        'cmbTecnico.SelectedIndex = 0
        txtObservaciones.Text = ""

        txtNroOS.Enabled = True
        dtpFecDesde.Enabled = True
        dtpFecHasta.Enabled = True
        txtDetalle.Enabled = False

    End Sub
    Private Function ValidaFecha() As Boolean
        If dtpFecDesde.Value > dtpFecHasta.Value Then
            MessageBox.Show("La fecha desde no puede ser mayor a la fecha Hasta", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Return False
        Else
            Return True
        End If
    End Function

    Private Sub btnLimpiaForm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLimpiaForm.Click
        LimpiaFormulario()
    End Sub

    Private Sub btnConsultar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConsultar.Click
        Dim businessOS As New businessOS()
        Dim OS As New clsOrden_Servicio()
        Dim ListaOS As New List(Of clsOrden_Servicio)
        Dim NroOS As Int32
        Dim FecDesde As Date
        Dim FecHasta As Date
        Try

            If txtNroOS.Text.Trim.Length > 0 Then
                NroOS = Convert.ToInt32(txtNroOS.Text.Trim)
            Else
                NroOS = 0
            End If
            If ValidaFecha() = False Then
                Exit Sub
            End If

            FecDesde = dtpFecDesde.Value
            FecHasta = dtpFecHasta.Value

            ListaOS = businessOS.TraeOrdenesServicioAsignable(NroOS, FecDesde, FecHasta)

            If ListaOS.Count = 0 Then
                MessageBox.Show("No se encontraron ordenes de servicio con los parametros especificados", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
            ElseIf ListaOS.Count = 1 Then
                OS = ListaOS.Item(0)
                AsignaCampo(OS)
            Else
                TraeConsulta(ListaOS)
            End If
        Catch ex As Exception
        Finally
            businessOS.Dispose()
            OS.Dispose()
        End Try
    End Sub
    Public Sub AsignaCampo(ByVal OS As clsOrden_Servicio)
        txtNroOS.Text = OS.Os_Id.ToString.Trim
        txtDetalle.Text = OS.Detalle.Item(0).Descri

        txtNroOS.Enabled = False
        dtpFecDesde.Enabled = False
        dtpFecHasta.Enabled = False
        txtDetalle.Enabled = False

    End Sub
    Private Sub TraeConsulta(ByVal ListaOS As List(Of clsOrden_Servicio))
        Me.Enabled = False
        ConsultarOrdenServicio.ModoAcceso = "ASIGNAR TECNICO"
        ConsultarOrdenServicio.FormatoGrilla()
        ConsultarOrdenServicio.CargaGrilla(ListaOS)
        ConsultarOrdenServicio.MdiParent = Me.MdiParent
        ConsultarOrdenServicio.Show()
    End Sub

    Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        Me.Close()
    End Sub

    Private Sub GroupBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox1.Enter

    End Sub

    Private Sub btnActualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActualizar.Click
        ''Valido que cargo una OS valida
        Dim OS As New clsOrden_Servicio()
        Dim OSDao As New daoOrden_Servicio()
        Dim Empleado As New clsEmpleado()
        Dim EMpleadoDao As New daoEmpleado()
        Dim OSBusiness As New businessOS()
        Dim Observaciones As String

        Try
            If txtNroOS.Text.Trim.Length = 0 Then
                MessageBox.Show("Debe seleccionar una Orden de Servicio valida para continuar.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Exit Sub
            End If
            OS = OSDao.TraeOrdenServicio(Convert.ToInt32(txtNroOS.Text.Trim))
            If OS.Os_Id = 0 Then
                MessageBox.Show("Debe seleccionar una Orden de Servicio valida para continuar.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Exit Sub
            End If
            Empleado = EMpleadoDao.TraeEmpleado(Convert.ToInt32(cmbTecnico.SelectedValue))
            Observaciones = txtObservaciones.Text.Trim.ToUpper
            If OS.Tec_Id > 0 Then
                If OSBusiness.ReAsignarTecnico(OS, Empleado, Observaciones) Then
                    MessageBox.Show("La orden de Servicio Nro: " & OS.Os_Id.ToString.Trim & " Fue Reasignada correctamente " & vbNewLine _
                                    & "Al Técnico " & Empleado.Apellido.Trim.ToUpper & " " & Empleado.Nombre.Trim.ToUpper, _
                                    "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    LimpiaFormulario()
                Else
                    MessageBox.Show("La orden de Servicio no pudo ser Reasignada. Comunicarse con Sistemas.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
            Else
                If OSBusiness.AsignarTecnico(OS, Empleado, Observaciones) Then
                    MessageBox.Show("La orden de Servicio Nro: " & OS.Os_Id.ToString.Trim & " Fue asignada correctamente " & vbNewLine _
                                    & "Al Técnico " & Empleado.Apellido.Trim.ToUpper & " " & Empleado.Nombre.Trim.ToUpper, _
                                    "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    LimpiaFormulario()
                Else
                    MessageBox.Show("La orden de Servicio no pudo ser Asignada. Comunicarse con Sistemas.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Finally
            OS.Dispose()
            OSDao.Dispose()
            Empleado.Dispose()
            EMpleadoDao.Dispose()
            OSBusiness.Dispose()
        End Try

    End Sub

    Private Sub cmbTecnico_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbTecnico.SelectedIndexChanged

    End Sub

    Private Sub txtNroOS_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtNroOS.KeyPress
        validarInt(e)
    End Sub

End Class